﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using condortravel.operaciones.business.operaciones;
using condortravel.operaciones.business.tour;

using System.Collections.Generic;
using condortravel.operaciones.core.DataModel;
using CondorTravelOperacionesWeb.Source;
using condortravel.operaciones.common.Log;
using condortravel.operaciones.error.Operaciones;
using condortravel.operaciones.common;
using condortravel.operaciones.entities.Entities;

namespace CondorTravelOperacionesWeb.Pages.Controles
{
    public partial class UCAsignarRecursosGuias : ControlBase
    {

        private int mRecursoSolicitado_ID;

        #region Eventos controles
        public override event ControlBase.EventOnErrorControl ErrorControl;
        public override event ControlBase.EventOnMessageControl MessageControl;

        public delegate void EventSamePage (int recursoSolicitadoId);
        public virtual event EventSamePage EventSamePageCall;

        #endregion
         
        #region Business Objects
        private TourServices tourServices;

        public TourServices TourServices
        {
            set { tourServices = value; }
        }

        #endregion

        
       /* public long CodigoProgramacion
        {
            get { return hCodigoProgramacion.Value.Equals(String.Empty) ? 0 : int.Parse(hCodigoProgramacion.Value); }
            set { hCodigoProgramacion.Value = value.ToString(); }
        }*/

        protected void Page_Load(object sender, EventArgs e)
        {
            //buscarServiciosProgramados();
            if (!IsPostBack)
                cargaDatosIniciales();
        }
        private void cargaDatosIniciales()
        {
           /* Tb_RecursosSolicitado x;
            x.Tb_Estado_Tour.descripcion*/
                // Util.LoadDropDownList(cboEstadoProgramacion, Estaticas.getListEstadoProgramacion(), "descripcion", "estadoProgramacion_ID", true, "0", "-");
        }

        public void mostrarProgramacion()
        {
            //Muestra informacion de itinerario
           /* Tb_ServiciosProgramado servicio = operacionesServices.getProgramacionByCodigo(CodigoProgramacion);
            if (servicio != null)
            {
                lblCodigoProgramacion.Text = servicio.programacion_ID.ToString();
                txtFechaProgramacion.Text = servicio.fechaProgramacionInicio.ToShortDateString();
                txtAgente.Text = servicio.Tb_ItinerarioViajero.Tb_Agente.nombre;
                txtDescripcionProg.Text = servicio.descripcion;
                txtFechaFinalizacion.Text = servicio.fechaProgramacionFin.ToShortDateString();
                txtServicio.Text = servicio.Tb_DetalleReserva.Tb_TipoReserva.descripcion;
                Util.SelectItemDropDownList(cboEstadoProgramacion, servicio.estadoProgramacion_ID.ToString());
                //muestra informacion de los servicios programados
                gvListBitacora.DataSource = operacionesServices.getListEventoByProgramacion(CodigoProgramacion);
                gvListBitacora.DataBind();
                
            }*/
        }

        /// <summary>
        /// Por cada fila entra a este metodo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvListGuias_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                /*Tb_Evento evento = (Tb_Evento)e.Row.DataItem;
                Label lblEstado = (Label)e.Row.FindControl("lblEstado");
                LinkButton lnkEliminar = (LinkButton)e.Row.FindControl("lnkEliminar");
                lblEstado.Text = (evento.Tb_Estado_Evento != null) ? evento.Tb_Estado_Evento.descripcion : " - ";
                lnkEliminar.Attributes.Add("onclick", String.Format("if(!confirm('Está seguro que desea eliminar el evento seleccionado?')) return false;"));
                 * */
            }
        }



        private void buscarServiciosProgramados()
        {
           /* try
            {
                FilterItinerarioCriteria filter = obtenerCriterios();
                List<Tb_ServiciosProgramado> lista = operacionesServices.getListProgramaciones(CodigoProgramacion);
                gvListBitacora.DataSource = lista;
                gvListBitacora.DataBind();
                if (lista.Count == 0)
                    throw new OperacionesException.NoExisteItinerariosOPException();
            }
            catch (Exception exc1)
            {
                this.ErrorControl(null, exc1);
                LogApp.WriteLog(ELogLevel.ERROR, string.Format("{0}-{1}", exc1.Message, exc1.StackTrace));
            }
            */
        }

        protected void btnNuevoEvento_Click(object sender, EventArgs e)
        {
          /*  try
            {
                if (cboEstadoProgramacion.SelectedValue != null)
                    if (cboEstadoProgramacion.SelectedValue.Equals(AppStatic.VAR_OPE_ESTADO_EVENTO_FINALIZADO.ToString()))
                        throw new condortravel.operaciones.error.Operaciones.OperacionesException.NoCrearEventoEstadoFinalizadoOPException();
                CommandEventArgs arg = new CommandEventArgs("NuevoEvento", CodigoProgramacion);
                GridViewCommandEventArgs evenarg = new GridViewCommandEventArgs(sender, arg);
                NuevoEvento_Click(sender, evenarg);
            }
            catch (Exception exc)
            {
                this.ErrorControl(cmdNuevoEvento,exc);
            }*/
        }

        protected void cmdActualizar_Click(object sender, EventArgs e)
        {
            
          /*  Tb_ServiciosProgramado programacion=new Tb_ServiciosProgramado();
            programacion.programacion_ID = CodigoProgramacion;            
            programacion.estadoProgramacion_ID = int.Parse(cboEstadoProgramacion.SelectedValue);
            try
            {
                operacionesServices.updateProgramacion(programacion);
                this.MessageControl("La programación ha sido actualizada correctamente");

                ActualizarProgEvento_Click(cmdActualizar, e);
            }
            catch (Exception exc)
            {
                this.ErrorControl(cmdActualizar, exc);
            }*/
        }

        protected void gvListBitacora_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        protected void gvListGuias_OnRowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "eliminar")
            {
                int codigo = int.Parse(e.CommandArgument.ToString());
                tourServices.deleteDetalleRecursosSolicitados(codigo);

                if (EventSamePageCall != null)
                {
                    EventSamePageCall(int.Parse(hRecursosToursID.Value));
                }
            }
        }


        public void activeControl(int recursoSolicitado_ID)
        {
            // cargar combos
            Util.LoadDropDownList(cmbGuias, Estaticas.getListGuiaTuristico(), "nombre", "guiaTuristico_ID", true, "0", "-");
            Util.LoadDropDownList(cmbEstadoSolicitud, Estaticas.getListEstadoTour(), "descripcion", "estadoTour_ID", true, "0", "-");
            hRecursosToursID.Value = recursoSolicitado_ID + "";
            


            // load datos del tour
            Tb_RecursosSolicitados rs = tourServices.getRecursosSolicitadosById(recursoSolicitado_ID);
            if (rs != null)
            {
                txtCodigoTour.Text = rs.Tb_Detalle_Tour.tour_ID.ToString();
                txtFecha.Text = rs.Tb_Detalle_Tour.Tb_Tour.fecha.ToShortDateString();

                // seleccionar
                //Seleccionar el estado x defecto
                if (rs.estadoRecursoSolicitado != 0)
                {
                    Util.SelectItemDropDownList(cmbEstadoSolicitud, rs.estadoRecursoSolicitado.ToString());
                }


                // view grilla
                FilterDetalleRecursosSolicitadosCriteria filter = new FilterDetalleRecursosSolicitadosCriteria();
                filter.RecursoSolicitado_ID = recursoSolicitado_ID;
                try {
                    List<Tb_Detalle_RecursosSolicitados> lista = tourServices.getListDetalleRecursosSolicitadosGuiasgetListByCriteria(filter);
                    gListGuias.DataSource = lista;
                    gListGuias.DataBind();
                  if (lista.Count == 0)
                            throw new IncidentesException.NoExisteIncidenciasException();
               }
               catch (Exception exc1)
               {
                // this.ErrorControl(null, exc1);
                LogApp.WriteLog(ELogLevel.ERROR, string.Format("{0}-{1}", exc1.Message, exc1.StackTrace));
               }
                

            }

      }


        private FilterRecursosSolicitadosCriteria obtenerCriterios()
        {
            FilterRecursosSolicitadosCriteria criterios = new FilterRecursosSolicitadosCriteria();
            return criterios;
        }

        protected void btnAsignar_Click(object sender, EventArgs e)
        {
            Tb_Detalle_RecursosSolicitados drs = new Tb_Detalle_RecursosSolicitados();
            drs.detalleRecursoSolicitado_ID = 0;
            drs.guiaTuristico_ID = int.Parse(cmbGuias.SelectedValue);
            drs.recursoSolicitado_ID = int.Parse(hRecursosToursID.Value);
            drs.traslado_ID = null;
            drs.fechaAsignacion = DateTime.Now;
            tourServices.saveDetalleRecursosSolicitados(drs);



            if (EventSamePageCall != null)
            {
                EventSamePageCall(int.Parse(hRecursosToursID.Value));
            }
        }

        protected void btnGuardarEstado_Click(object sender, EventArgs e)
        {
            Tb_RecursosSolicitados rs = new Tb_RecursosSolicitados();
            rs.recursoSolicitado_ID = int.Parse(hRecursosToursID.Value);
            rs.estadoRecursoSolicitado = Int32.Parse(cmbEstadoSolicitud.SelectedValue);
            // guardar en la base de datos
            tourServices.updateEstadoRecursoSolicitado(rs);

            if (EventSamePageCall != null)
            {
                EventSamePageCall(int.Parse(hRecursosToursID.Value));
            }
        }

        protected void hCodigoItinerario_ValueChanged(object sender, EventArgs e)
        {

        }

        
    }
}